home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 1159.ZIP / OSSADD.PRG < prev    next >
Text File  |  1986-12-29  |  11KB  |  469 lines

  1. SET DELETED ON
  2. SET SAFETY OFF
  3. SET BELL OFF
  4. CLEAR
  5. PUBLIC CALOVER
  6. CALOVER=0
  7. DUPL=0
  8. SELECT 1
  9. USE
  10. USE &DBNAME INDEX &INDEX1,&INDEX2
  11. SELECT 2
  12. USE REPWORK
  13. SET FORMAT TO REPINST.FMT
  14. X=0
  15. DO WHILE X<1
  16.  APPEND
  17.  N4='K'
  18.  DO WHILE N4#'Y'.AND.N4#'N'
  19.   CLEAR
  20.   ?
  21.   ?
  22.   ?
  23.   ?
  24.   ?
  25.   ?'Do you want to add more records or make any changes in those records'
  26.   ?
  27.   WAIT 'which you have just added ?  (Y/N)' TO N4
  28.   N4=UPPER(N4)
  29.   IF N4#'Y'.AND.N4#'N'
  30.    LOOP
  31.   ENDIF
  32.  ENDDO
  33.   IF N4='N'
  34.   ERRFILE=0
  35.   CHECKDT=1
  36.   CHECKDATE='K'
  37.  DO WHILE CHECKDATE#'N' .AND. CHECKDATE#'Y' 
  38.    CLEAR
  39.    @ 5,7 SAY 'Do you wish to make any corrections during the record checking'
  40.    @ 6,7 SAY 'procedure ? (Y/N)'
  41.    @ 10,7 SAY 'If not, it will be necessary to make the corrections after the'
  42.    WAIT '       record check is complete.' TO CHECKDATE
  43.    CHECKDATE=UPPER(CHECKDATE)
  44.    IF CHECKDATE='N'
  45.     CHECKDT=0
  46.    ENDIF
  47.   ENDDO
  48.    CLEAR
  49.    @ 1,16 SAY 'Data base in use:  '
  50.    ?? OSS
  51.    @ 3,0
  52.    ?'The record additions are now being processed, and checked.  If they are'
  53.    ?'okay, they will automatically be added to the main data base.'
  54.    ?
  55.    ?
  56.    ?
  57.    ?
  58.    ?'                           ONE MOMENT PLEASE'
  59.    ?     
  60.    ?'                ________________________________________'
  61.    ?'               |                                        |'
  62.    ?'               |    PLEASE DO NOT PRESS ANY KEYS YET    |'
  63.    ?'               |________________________________________|'
  64.    ?      
  65.    ?
  66.    @ 0,16 SAY 'Working on preliminary record check.'
  67.    TOTALREC=RECCOUNT()
  68.    IF DUPREC='N'
  69.     DELETE FOR LEN(TRIM(INST_TYPE))=0 .OR. LEN(TRIM(TVA_NO))=0 .OR.;
  70. ASC(LTRIM(TVA_NO))=63
  71.    ELSE
  72.     DELETE FOR LEN(TRIM(INST_TYPE))=0.OR.ASC(LTRIM(TVA_NO))=63
  73.    ENDIF
  74.    GO TOP
  75.    DO WHILE .NOT. EOF()
  76.     REPLACE TVA_NO WITH UPPER(LTRIM(TVA_NO))
  77.     REPLACE SERIAL_NO WITH UPPER(LTRIM(SERIAL_NO))
  78.     IF TVAID='Y'
  79.      IF ' ' $ TRIM(TVA_NO)
  80.        VSTR=TRIM(TVA_NO)
  81.        DO WHILE ' ' $ VSTR
  82.          P=AT(' ',VSTR)
  83.          VSTR=LEFT(VSTR,P-1)+RIGHT(VSTR,LEN(VSTR)-P)
  84.        ENDDO
  85.        REPLACE TVA_NO WITH VSTR
  86.      ENDIF
  87.     ENDIF
  88.     IF SERID='Y'
  89.      IF ' ' $ TRIM(SERIAL_NO)
  90.        VSTR=TRIM(SERIAL_NO)
  91.        DO WHILE ' ' $ VSTR
  92.          P=AT(' ',VSTR)
  93.          VSTR=LEFT(VSTR,P-1)+RIGHT(VSTR,LEN(VSTR)-P)
  94.        ENDDO
  95.        REPLACE SERIAL_NO WITH VSTR
  96.      ENDIF
  97.     ENDIF
  98.     SKIP
  99.    ENDDO
  100.   IF DUPREC='N'
  101.    GO BOTTOM
  102.    DO WHILE .NOT. BOF()
  103.     RECNUM=RECNO()
  104.     TVANO=TVA_NO
  105.     DELETE FOR TVANO=TVA_NO .AND. RECNUM # RECNO()
  106.     GO RECNUM
  107.     SKIP -1
  108.    ENDDO    
  109.   ENDIF
  110.    SET DELETED OFF
  111.    COPY TO REPDEL FOR DELETED()
  112.    SET DELETED ON
  113.    PACK
  114.    YR=YEAR(DAT)
  115.    MO=MONTH(DAT)
  116.    DY=DAY(DAT)
  117.    MODREC=RECCOUNT()
  118.    @ 0,3 SAY 'Total No. of records (after any deletions) in this ;
  119. addition is'
  120.    ?? MODREC
  121.    ??'.'
  122.    @ 2,3 SAY 'Total No. of records which were deleted is'
  123.    RECDEL=TOTALREC-MODREC
  124.    ?? RECDEL
  125.    ??'.'
  126.    GO TOP
  127.    @ 23,24 SAY 'Now checking record'
  128.    @ 23,43 SAY RECNO()
  129.    SELECT 4
  130.    USE REPERR
  131.    SELECT 2
  132.    DO WHILE .NOT.EOF()
  133.     REPLACE SUBCATID WITH UPPER(LTRIM(SUBCATID))
  134.     REPLACE INST_TYPE WITH LTRIM(INST_TYPE)
  135.     IF DUPREC='N'
  136.     SELECT 1
  137.     SEEK B->TVA_NO
  138.     IF .NOT. EOF()
  139.      SELECT 2
  140.      REPLACE TVA_NO WITH '?'+TVA_NO
  141.      REPLACE REMARK WITH 'DUPLICATE ENTRY !'
  142.      DUPL=1
  143.     ENDIF
  144.     SELECT 2
  145.     ENDIF
  146.     REPLACE LAST_UPDATE WITH DATE()
  147.     CVAR=LTRIM(TRIM(UPPER(COMLINE)))
  148.     IF '.D.' $ CVAR.OR.'.E.' $ CVAR
  149.      REPLACE REMARK WITH ' '
  150.      IF LEN(CVAR)<4
  151.       CVAR=' '
  152.      ENDIF
  153.     ENDIF
  154.     IF '.' $ CVAR
  155.     IF '2' $ CVAR
  156.      REPLACE CALIB_INT WITH 99
  157.      REPLACE BY_DATE WITH 0
  158.      IF '.ED.' $ CVAR.OR.'.DD.' $ CVAR
  159.       REPLACE CALIB_DATE WITH CTOD('  /  /  ')
  160.       REPLACE CAL_DUE_DT WITH CALIB_DATE
  161.      ENDIF
  162.      REPLACE COMLINE WITH ' '
  163.      SKIP
  164.      @ 23,43 SAY RECNO()
  165.      LOOP
  166.     ENDIF
  167.     IF '3' $ CVAR
  168.      REPLACE CALIB_INT WITH 0
  169.      REPLACE BY_DATE WITH 0
  170.      IF '.ED.' $ CVAR.OR.'.DD.' $ CVAR
  171.       REPLACE CALIB_DATE WITH CTOD('  /  /  ')
  172.       REPLACE CAL_DUE_DT WITH CALIB_DATE
  173.      ENDIF
  174.      REPLACE COMLINE WITH ' '
  175.      SKIP
  176.      @ 23,43 SAY RECNO()
  177.      LOOP
  178.     ENDIF
  179.     DO CASE
  180.      CASE '.OF.' $ CVAR.OR.'.0F.' $ CVAR
  181.       CALOVER=0
  182.       REPLACE BY_DATE WITH CALOVER
  183.      CASE '.PO.' $ CVAR
  184.       CALOVER=200
  185.       REPLACE BY_DATE WITH CALOVER
  186.      CASE '.P0.' $ CVAR
  187.       CALOVER=200
  188.       REPLACE BY_DATE WITH CALOVER
  189.      CASE '.O.' $ CVAR
  190.       CALOVER=100
  191.       REPLACE BY_DATE WITH CALOVER
  192.      CASE '.0.' $ CVAR
  193.       CALOVER=100
  194.       REPLACE BY_DATE WITH CALOVER
  195.     ENDCASE
  196.     IF ('.ED.' $ CVAR.OR.'.DD.' $ CVAR).AND.(CALIB_INT=0.OR.CALIB_INT=99)
  197.       REPLACE CALIB_DATE WITH CTOD('  /  /  ')
  198.       REPLACE CAL_DUE_DT WITH CALIB_DATE
  199.       REPLACE BY_DATE WITH 0
  200.      REPLACE COMLINE WITH ' '
  201.       SKIP
  202.       @ 23,43 SAY RECNO()
  203.       LOOP
  204.     ENDIF
  205.     ENDIF
  206.     IF CALIB_INT=99 .OR. CALIB_INT=0
  207.       REPLACE BY_DATE WITH 0
  208.      REPLACE COMLINE WITH ' '
  209.      SKIP
  210.      @ 23,43 SAY RECNO()
  211.      LOOP
  212.     ENDIF
  213.   REPLACE COMLINE WITH ' '
  214.   IF YEAR(CALIB_DATE)+100-YEAR(DAT)<10
  215.    MOCALDT=MONTH(CALIB_DATE)
  216.    DYCALDT=DAY(CALIB_DATE)
  217.    YRCALDT=INT(YEAR(CALIB_DATE)+100)
  218.    IF MOCALDT<10
  219.      M=1
  220.     ELSE
  221.      M=2
  222.    ENDIF
  223.    IF DYCALDT<10
  224.      D=1
  225.     ELSE
  226.      D=2
  227.    ENDIF
  228.    REPLACE CALIB_DATE WITH CTOD(STR(MOCALDT,M,0)+'/'+STR(DYCALDT,D,0)+'/'+;
  229. STR(YRCALDT,4,0))
  230.   ENDIF
  231.   IF YEAR(CAL_DUE_DT)+100-YEAR(DAT)<10
  232.    MOCALDT=MONTH(CAL_DUE_DT)
  233.    DYCALDT=DAY(CAL_DUE_DT)
  234.    YRCALDT=INT(YEAR(CAL_DUE_DT)+100)
  235.    IF MOCALDT<10
  236.      M=1
  237.     ELSE
  238.      M=2
  239.    ENDIF
  240.    IF DYCALDT<10
  241.      D=1
  242.     ELSE
  243.      D=2
  244.    ENDIF
  245.    REPLACE CAL_DUE_DT WITH CTOD(STR(MOCALDT,M,0)+'/'+STR(DYCALDT,D,0)+'/'+;
  246. STR(YRCALDT,4,0))
  247.   ENDIF
  248.   IF BY_DATE#200.AND.CALOVER=0
  249.     TCOMP=YR*365.24+MO*30.44+DY
  250.     TDCOMP=YR*365.24+(MO-CALIB_INT)*30.44+DY
  251.     CDCOMP=YEAR(CALIB_DATE)*365.24+MONTH(CALIB_DATE)*30.44+DAY(CALIB_DATE)
  252.     CALDUEP=CDCOMP+CALIB_INT*30.44-5
  253.     CALDUDT=YEAR(CAL_DUE_DT)*365.24+MONTH(CAL_DUE_DT)*30.44+DAY(CAL_DUE_DT)
  254.     IF TDCOMP>CDCOMP.OR.CDCOMP>TCOMP
  255.     IF CHECKDT=0
  256.      ERRFILE=1
  257.      SELECT 4
  258.      APPEND BLANK
  259.      REPLACE SUBCATID WITH UPPER(B->SUBCATID)
  260.      REPLACE INST_TYPE WITH B->INST_TYPE
  261.      REPLACE TVA_NO WITH B->TVA_NO
  262.      REPLACE SERIAL_NO WITH B->SERIAL_NO
  263.      REPLACE BY_DATE WITH B->BY_DATE
  264.      REPLACE CALIB_DATE WITH B->CALIB_DATE
  265.      REPLACE CAL_DUE_DT WITH B->CAL_DUE_DT
  266.      REPLACE LOCATION WITH B->LOCATION
  267.      REPLACE REMARK WITH B->REMARK
  268.      REPLACE CALIB_INT WITH B->CALIB_INT
  269.      REPLACE LAST_UPDAT WITH B->LAST_UPDAT
  270.      SELECT 2
  271.      DELETE
  272.      SKIP
  273.      LOOP
  274.     ENDIF
  275.      DO REPCALDT
  276.      @ 23,24 SAY 'Now checking record'
  277.      @ 23,43 SAY RECNO()
  278.      LOOP
  279.     ENDIF
  280.     YRDUE=YEAR(CALIB_DATE)
  281.     MODUE=MONTH(CALIB_DATE)+CALIB_INT
  282.     DYDUE=DAY(CALIB_DATE)
  283.     IF MODUE>12
  284.      YRDUE=YRDUE+INT(MODUE/12)
  285.      MODUE=INT(MODUE-INT(MODUE/12)*12)
  286.     ENDIF
  287.     M=1
  288.     IF MODUE>9
  289.      M=2
  290.     ENDIF
  291.     D=2
  292.     IF DYDUE<10
  293.      D=1
  294.     ENDIF
  295.     DATDU=STR(MODUE,M,0)+'/'+STR(DYDUE,D,0)+'/'+STR(YRDUE,4,0)
  296.     CALCDUDT=CTOD(DATDU)
  297.     CALDUETY=YEAR(CALCDUDT)*365.24+MONTH(CALCDUDT)*30.44+DAY(CALCDUDT)
  298.     IF CALDUDT>CALDUETY.OR.CALDUDT<CALDUEP
  299.     IF CHECKDT=0
  300.      ERRFILE=1
  301.      SELECT 4
  302.      APPEND BLANK
  303.      REPLACE SUBCATID WITH UPPER(B->SUBCATID)
  304.      REPLACE INST_TYPE WITH B->INST_TYPE
  305.      REPLACE TVA_NO WITH B->TVA_NO
  306.      REPLACE SERIAL_NO WITH B->SERIAL_NO
  307.      REPLACE BY_DATE WITH B->BY_DATE
  308.      REPLACE CALIB_DATE WITH B->CALIB_DATE
  309.      REPLACE CAL_DUE_DT WITH B->CAL_DUE_DT
  310.      REPLACE LOCATION WITH B->LOCATION
  311.      REPLACE REMARK WITH B->REMARK
  312.      REPLACE CALIB_INT WITH B->CALIB_INT
  313.      REPLACE LAST_UPDAT WITH B->LAST_UPDAT
  314.      SELECT 2
  315.      DELETE
  316.      SKIP
  317.      LOOP
  318.     ENDIF
  319.      DO REPCALDU
  320.      @ 23,24 SAY 'Now checking record'
  321.      @ 23,43 SAY RECNO()
  322.     LOOP
  323.     ENDIF
  324.    IF BY_DATE#200
  325.     REPLACE BY_DATE WITH CALDUDT-1
  326.    ENDIF
  327.   ENDIF
  328.     SKIP
  329.     CALOVER=0
  330.     @ 23,43 SAY RECNO()
  331.    ENDDO
  332.    IF ERRFILE=1
  333.     SELECT 4
  334.     GO TOP
  335.     DO ERRFILE
  336.     USE
  337.     SELECT 2
  338.     APPEND FROM REPERR
  339.     PACK
  340.     SELECT 4
  341.     USE REPERR
  342.     ZAP
  343.     SELECT 2
  344.    ENDIF
  345.    @ 23,6 SAY 'Finished record check.  Now adding records to main data base.'
  346.    GO TOP
  347.    IF EOF()
  348.     CLEAR
  349.     @ 1,15 SAY 'Data base in use:  '
  350.     ?? OSS
  351.     @ 4,20 SAY 'NO RECORDS WERE ADDED TO THE DATA BASE.'
  352.    IF DUPREC='N'
  353.     @ 7,0 SAY 'No records were found which contained both '
  354.     ?? INSTNAME
  355.     ?'designation and a valid '
  356.     ?? TVANUMBER
  357.     ??' designation.'
  358.    ELSE
  359.     @ 7,0 SAY 'No records were found which contained a designation'
  360.     ?'for the '
  361.     ?? INSTNAME
  362.     ??' field.'
  363.    ENDIF
  364.     ?
  365.     ?'Therefore, no records were added to the data base.'
  366.     USE REPDEL
  367.     ZAP
  368.     USE REPWORK
  369.     ZAP
  370.     @ 12,0
  371.     WAIT
  372.     RETURN
  373.    ENDIF
  374.    USE
  375.    SELECT 1
  376.    APPEND FROM REPWORK
  377.    USE REPWORK
  378.    SET BELL ON
  379. IF DUPL=1
  380.  CLEAR
  381.  @ 5,0 SAY 'PLEASE NOTE THAT ONE OR MORE DUPLICATE '
  382.  ?? TVANUMBER
  383.  ??' ID CODES'
  384.  ?
  385.  ?'WERE ENCOUNTERED.  THEY HAVE BEEN CODED AS BEING DUPLICATE RECORDS.'
  386.  ?
  387.  ?'IN ADDITION, A QUESTION MARK WAS ADDED TO THE FRONT OF THE'
  388.  ?
  389.  ? TVANUMBER
  390.  ??' IN QUESTION.'
  391.  ?
  392.  ?
  393.  ?
  394.  WAIT
  395. ENDIF
  396. ADDFILE=1
  397. MODFILE=0
  398. SEECODE='K'
  399. DO WHILE SEECODE#'APPLE'
  400.   CLEAR
  401.   @ 1,10 SAY 'What do you want to do ?'
  402.   @ 4,10 SAY 'A)  Print the record(s) which you just added.'
  403.   @ 6,10 SAY 'B)  View the record(s) which you just added on this screen.'
  404.   @ 8,10 SAY 'C)  Both print and view the record(s) which you just added.'
  405.   IF RECDEL>0
  406.   @ 10,7 SAY '-----------------------------------------------------------------'
  407.   @ 12,10 SAY 'D)  Print the record(s) which were just deleted.'
  408.   @ 14,10 SAY 'E)  View the record(s) which were just deleted.'
  409.   @ 16,10 SAY 'F)  Both print and view the record(s) which were just deleted.'
  410.   ENDIF
  411.   ?
  412.   ?
  413.   ?'          Press "RETURN" to return to the previous menu.'
  414.   ?
  415.   WAIT '                   ' TO SEECODE
  416.   ??'    WORKING . . .'
  417.   SEECODE=UPPER(SEECODE)
  418.   DO CASE
  419.     CASE SEECODE='A'
  420.       PDELREC=0
  421.       PRINTOUT=1
  422.       VIEW=0
  423.     CASE SEECODE='B'
  424.       PDELREC=0
  425.       VIEW=1
  426.       PRINTOUT=0
  427.     CASE SEECODE='C'
  428.       PDELREC=0
  429.       PRINTOUT=1
  430.       VIEW=1
  431.     CASE SEECODE='D'.AND.RECDEL>0
  432.       PDELREC=1
  433.       USE REPDEL
  434.       PRINTOUT=1
  435.       VIEW=0
  436.     CASE SEECODE='E'.AND.RECDEL>0
  437.       PDELREC=1
  438.       USE REPDEL
  439.       VIEW=1
  440.       PRINTOUT=0
  441.     CASE SEECODE='F'.AND.RECDEL>0
  442.       PDELREC=1
  443.       USE REPDEL
  444.       PRINTOUT=1
  445.       VIEW=1
  446.     CASE ASC(SEECODE)=0
  447.       USE REPDEL
  448.       ZAP
  449.       USE REPWORK
  450.       ZAP
  451.       RETURN
  452.     CASE ASC(SEECODE)<65.OR.ASC(SEECODE)>70.OR.RECDEL=0
  453.       LOOP
  454.   ENDCASE
  455.   DO REPINSTP
  456.   USE REPWORK
  457.   SEECODE='K'
  458.   LOOP
  459. ENDDO
  460.    USE REPDEL
  461.    ZAP
  462.    USE REPWORK
  463.    ZAP
  464.    RETURN
  465.   ENDIF
  466.  ENDDO
  467. RETURN
  468.  
  469.